package com.qiangesoft.rdp.starter.captcha.core;

import com.qiangesoft.rdp.starter.captcha.model.CaptchaParam;
import com.qiangesoft.rdp.starter.captcha.model.Base64Result;

import java.io.OutputStream;

/**
 * 验证码服务
 *
 * @author qiangesoft
 * @date 2023-09-19
 */
public interface EasyCaptchaTemplate {

    /**
     * 生成验证码（默认的生成规则）
     *
     * @param key          获取验证码的主体标识
     * @param outputStream 输出流
     * @return 验证码文本
     */
    String create(String key, OutputStream outputStream);

    /**
     * 生成验证码（自定义生成规则）
     *
     * @param key          获取验证码的主体标识
     * @param captchaParam 验证码参数
     * @param outputStream 输出流
     * @return 验证码文本
     */
    String create(String key, CaptchaParam captchaParam, OutputStream outputStream);

    /**
     * 生成验证码（默认的生成规则）
     *
     * @param key 获取验证码的主体标识
     * @return 验证码文本
     */
    Base64Result create(String key);

    /**
     * 生成验证码（自定义生成规则）
     *
     * @param key          获取验证码的主体标识
     * @param captchaParam 验证码参数
     * @return 验证码文本
     */
    Base64Result create(String key, CaptchaParam captchaParam);

    /**
     * 校验验证码
     *
     * @param key  获取验证码的主体标识
     * @param captcha 验证码文本
     */
    boolean check(String key, String captcha);
}
